#ifndef __LAYOUT_SHADER_CPP__
#define __LAYOUT_SHADER_CPP__
#include <lampe/types.h>
#include <IGPUProgrammingServices.h>
namespace lampe{
namespace video{

	/**
	 * Создаёт шейдер отрисовки по слоям. Для правильной работы необходимо задать объекту на который будет
	 * установлен шейдер назначить правельные текстуры.
	 *
	 * @code
	 * s32 shaderMaterialType = createLayoutShader(5);
	 * terrain->scaleTexture(1.0f, 20.0f);
	 * terrain->setMaterialType((E_MATERIAL_TYPE)shaderMaterialType);
	 * terrain->setMaterialTexture( 0, driver->getTexture("/home/caffeine/workspace/game_test/Debug/data/ter/grass.jpg") );
	 * terrain->setMaterialTexture( 1, driver->getTexture("/home/caffeine/workspace/game_test/Debug/data/ter/sand.jpg") );
	 * terrain->setMaterialTexture( 2, driver->getTexture("/home/caffeine/workspace/game_test/Debug/data/ter/dirt.jpg") );
	 * terrain->setMaterialTexture( 3, driver->getTexture("/home/caffeine/workspace/game_test/Debug/data/ter/stone.jpg") );
	 * terrain->setMaterialTexture( 4, driver->getTexture("/home/caffeine/workspace/game_test/Debug/data/ter/lava.jpg") );
	 * terrain->setMaterialTexture( 5, driver->getTexture("/home/caffeine/workspace/game_test/Debug/data/ter/water.jpg") );
	 * terrain->setMaterialTexture( 6, driver->getTexture("/home/caffeine/workspace/game_test/Debug/data/ter/mask123.jpg") );
	 * terrain->setMaterialTexture( 7, driver->getTexture("/home/caffeine/workspace/game_test/Debug/data/ter/mask45.jpg") );
	 * @endcode
	 *
	 * @param layoutType тип слоёв. 1 означает порядок текстур (от 0) базовая, маска, красный;
	 * 2 базовая, маска, красный, зелёный; 3 базовая, маска, красный, зелёный, синий;
	 * 4 базовая, маска, красный, зелёный, синий, вторая маска, красный; 4 базовая, маска,
	 * красный, зелёный, синий, вторая маска, красный, зелёный
	 * @return номер шейдера
	 */
lampe::s32 createLayoutShader(irr::video::IGPUProgrammingServices*gpu,lampe::u8 layoutType);

}//namespace video
}//namespace lampe
#endif
